<!DOCTYPE html>


  <html class="light page-post">


<head>
  <meta charset="utf-8">
  
  <title>Java注解介绍 | 东窗随笔</title>

  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

  
    <meta name="keywords" content="Java,Java注解," />
  

  <meta name="description" content="&amp;#x672C;&amp;#x6587;&amp;#x662F;&amp;#x5BF9; &amp;#x201C;Oracle java &amp;#x6559;&amp;#x7A0B;&amp;#x6CE8;&amp;#x89E3;&amp;#x201D; &amp;#x7684;&amp;#x7FFB;&amp;#x8BD1;">
<meta property="og:type" content="article">
<meta property="og:title" content="Java注解介绍">
<meta property="og:url" content="http://hanlyjiang.github.io/2016/08/03/Java注解介绍/index.html">
<meta property="og:site_name" content="东窗随笔">
<meta property="og:description" content="&amp;#x672C;&amp;#x6587;&amp;#x662F;&amp;#x5BF9; &amp;#x201C;Oracle java &amp;#x6559;&amp;#x7A0B;&amp;#x6CE8;&amp;#x89E3;&amp;#x201D; &amp;#x7684;&amp;#x7FFB;&amp;#x8BD1;">
<meta property="og:updated_time" content="2016-12-08T10:13:52.796Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Java注解介绍">
<meta name="twitter:description" content="&amp;#x672C;&amp;#x6587;&amp;#x662F;&amp;#x5BF9; &amp;#x201C;Oracle java &amp;#x6559;&amp;#x7A0B;&amp;#x6CE8;&amp;#x89E3;&amp;#x201D; &amp;#x7684;&amp;#x7FFB;&amp;#x8BD1;">

  

  
    <link rel="icon" href="/favicon.ico">
  

  <link href="/css/styles.css?v=d671a41f" rel="stylesheet">


  
    <link rel="stylesheet" href="/css/personal-style.css">
  

  

  
  <script type="text/javascript">
    var _hmt = _hmt || [];
    (function() {
      var hm = document.createElement("script");
      hm.src = "//hm.baidu.com/hm.js?57e94d016e201fba3603a8a2b0263af0";
      var s = document.getElementsByTagName("script")[0];
      s.parentNode.insertBefore(hm, s);
    })();
  </script>



  
    <script async src="https://dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>
  

  
    <link rel="stylesheet" href="//cdn.bootcss.com/font-awesome/4.3.0/css/font-awesome.min.css">
  
</head>

<body>


  
    <span id="toolbox-mobile" class="toolbox-mobile">观乎</span>
  

  <div class="post-header CENTER">
   
  <div class="toolbox">
    <a class="toolbox-entry" href="/">
      <span class="toolbox-entry-text">观乎</span>
      <i class="icon-angle-down"></i>
      <i class="icon-home"></i>
    </a>
    <ul class="list-toolbox">
      
        <li class="item-toolbox">
          <a
            class="ROUND_RECT"
            href="/archives/"
            rel="noopener noreferrer"
            target="_self"
            >
            博客
          </a>
        </li>
      
        <li class="item-toolbox">
          <a
            class="ROUND_RECT"
            href="/category/"
            rel="noopener noreferrer"
            target="_self"
            >
            分类
          </a>
        </li>
      
        <li class="item-toolbox">
          <a
            class="ROUND_RECT"
            href="/tag/"
            rel="noopener noreferrer"
            target="_self"
            >
            标签
          </a>
        </li>
      
        <li class="item-toolbox">
          <a
            class="ROUND_RECT"
            href="/about/"
            rel="noopener noreferrer"
            target="_self"
            >
            关于
          </a>
        </li>
      
        <li class="item-toolbox">
          <a
            class="ROUND_RECT"
            href="/atom.xml"
            rel="noopener noreferrer"
            target="_blank"
            >
            RSS
          </a>
        </li>
      
        <li class="item-toolbox">
          <a
            class="ROUND_RECT"
            href="/search/"
            rel="noopener noreferrer"
            target="_self"
            >
            搜索
          </a>
        </li>
      
    </ul>
  </div>


</div>


  <div id="toc" class="toc-article">
    <strong class="toc-title">文章目录</strong>
    <ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#java注解"><span class="toc-text">Java注解</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#注解基础知识"><span class="toc-text">注解基础知识</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#注解的格式"><span class="toc-text">注解的格式</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#声明注解类型"><span class="toc-text">声明注解类型</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#预定义的注解类型"><span class="toc-text">预定义的注解类型</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#被java-语言使用的注解"><span class="toc-text">被Java 语言使用的注解</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#应用在其他注解上的注解"><span class="toc-text">应用在其他注解上的注解</span></a></li></ol></li></ol></li></ol>
  </div>



<div class="content content-post CENTER">
   <article id="post-Java注解介绍" class="article article-type-post" itemprop="blogPost">
  <header class="article-header">
    <h1 class="post-title">Java注解介绍</h1>

    <div class="article-meta">
      <span>
        <i class="icon-calendar"></i>
        <span>2016.08.03</span>
      </span>

      
        <span class="article-author">
          <i class="icon-user"></i>
          <span>hanlyjiang@outlook.com</span>
        </span>
      

      
  <span class="article-category">
    <i class="icon-list"></i>
    <a class="article-category-link" href="/categories/Android/">Android</a> / <a class="article-category-link" href="/categories/Android/Java/">Java</a>
  </span>



      
        <span>
          <i class="icon-comment"></i>
          <a href="http://hanlyjiang.site/2016/08/03/Java注解介绍/#disqus_thread"></a>
        </span>
      

      
      <i class="fa fa-eye"></i> 
        <span id="busuanzi_container_page_pv">
           &nbsp热度 <span id="busuanzi_value_page_pv">
           <i class="fa fa-spinner fa-spin"></i></span>℃
        </span>
      

      
      
    </div>
  </header>

  <div class="article-content">
    
      <p>&#x672C;&#x6587;&#x662F;&#x5BF9; &#x201C;Oracle java &#x6559;&#x7A0B;&#x6CE8;&#x89E3;&#x201D; &#x7684;&#x7FFB;&#x8BD1;<br><a id="more"></a></p>
<p>&#x539F;&#x6587;&#x5730;&#x5740;&#xFF1A; <a href="http://docs.oracle.com/javase/tutorial/java/annotations/index.html" title="Oracle java &#x6559;&#x7A0B;- &#x6CE8;&#x89E3;" target="_blank" rel="external">Lesson: Annotations</a></p>
<h1 id="java&#x6CE8;&#x89E3;"><a href="#Java&#x6CE8;&#x89E3;" class="headerlink" title="Java&#x6CE8;&#x89E3;"></a>Java&#x6CE8;&#x89E3;</h1><p>&#x6CE8;&#x89E3;&#xFF08;Annotations&#xFF09;&#x662F;&#x4E00;&#x79CD;&#x7C7B;&#x578B;&#x7684;&#x5143;&#x6570;&#x636E;&#xFF0C;&#x63D0;&#x4F9B;&#x548C;&#x4E00;&#x4E2A;&#x7A0B;&#x5E8F;&#x76F8;&#x5173;&#x7684;&#x6570;&#x636E;&#xFF0C;&#x4F46;&#x662F;&#x5B83;&#x5374;&#x4E0D;&#x662F;&#x7A0B;&#x5E8F;&#x672C;&#x8EAB;&#xFF0C;&#x5BF9;&#x4E8E;&#x7A0B;&#x5E8F;&#x7684;&#x4EE3;&#x7801;&#x6267;&#x884C;&#x4E5F;&#x6CA1;&#x6709;&#x76F4;&#x63A5;&#x5F71;&#x54CD;&#x3002;</p>
<p>&#x6CE8;&#x89E3;&#x6709;&#x4EE5;&#x4E0B;&#x51E0;&#x79CD;&#x7528;&#x9014;&#xFF1A;</p>
<ul>
<li><strong>&#x7ED9;&#x7F16;&#x8BD1;&#x5668;&#x63D0;&#x4F9B;&#x4FE1;&#x606F;</strong> - &#x7F16;&#x8BD1;&#x5668;&#x53EF;&#x4EE5;&#x5229;&#x7528;&#x6CE8;&#x89E3;&#x6765;&#x68C0;&#x6D4B;&#x9519;&#x8BEF;&#x548C;&#x53D6;&#x6D88;&#x8B66;&#x544A;&#xFF08;suppress warnings&#xFF09;&#x3002;</li>
<li><strong>&#x7F16;&#x8BD1;&#x65F6;&#x548C;&#x90E8;&#x7F72;&#x65F6;&#x5904;&#x7406;</strong> -  &#x5DE5;&#x5177;&#x8F6F;&#x4EF6;&#x53EF;&#x4EE5;&#x5904;&#x7406;&#x6CE8;&#x89E3;&#x4FE1;&#x606F;&#x6765;&#x751F;&#x6210;&#x4EE3;&#x7801;&#xFF0C;XML&#x6587;&#x4EF6;&#xFF0C;&#x7B49;&#x7B49;</li>
<li><strong>&#x8FD0;&#x884C;&#x65F6;&#x5904;&#x7406;</strong> - &#x67D0;&#x4E9B;&#x6CE8;&#x91CA;&#x53EF;&#x4EE5;&#x5728;&#x8FD0;&#x884C;&#x65F6;&#x88AB;&#x5904;&#x7406;</li>
</ul>
<p>&#x8FD9;&#x4E00;&#x6559;&#x7A0B;&#x89E3;&#x91CA;&#x4E86;&#x6CE8;&#x89E3;&#x53EF;&#x4EE5;&#x88AB;&#x7528;&#x5728;&#x54EA;&#x4E9B;&#x5730;&#x65B9;&#xFF1A;&#x5982;&#x4F55;&#x4F7F;&#x7528;&#x6CE8;&#x89E3;&#xFF1B;Java &#x5E73;&#x53F0;&#x6709;&#x54EA;&#x4E9B;&#x53EF;&#x7528;&#x7684;&#x9884;&#x5B9A;&#x4E49;&#x6CE8;&#x91CA;&#xFF1B;type&#x6CE8;&#x91CA;&#x5982;&#x4F55;&#x4E0E;&#x7C7B;&#x578B;&#x53EF;&#x63D2;&#x62D4;&#x7CFB;&#x7EDF;&#x4E00;&#x8D77;&#x534F;&#x4F5C;&#x5199;&#x51FA;&#x652F;&#x6301;&#x5F3A;&#x7C7B;&#x578B;&#x68C0;&#x67E5;&#x7684;&#x4EE3;&#x7801;&#xFF1B;&#x5982;&#x4F55;&#x5B9E;&#x73B0;&#x53EF;&#x590D;&#x7528;&#x7684;&#x6CE8;&#x89E3;&#x3002;</p>
<hr>
<h2 id="&#x6CE8;&#x89E3;&#x57FA;&#x7840;&#x77E5;&#x8BC6;"><a href="#&#x6CE8;&#x89E3;&#x57FA;&#x7840;&#x77E5;&#x8BC6;" class="headerlink" title="&#x6CE8;&#x89E3;&#x57FA;&#x7840;&#x77E5;&#x8BC6;"></a>&#x6CE8;&#x89E3;&#x57FA;&#x7840;&#x77E5;&#x8BC6;</h2><h3 id="&#x6CE8;&#x89E3;&#x7684;&#x683C;&#x5F0F;"><a href="#&#x6CE8;&#x89E3;&#x7684;&#x683C;&#x5F0F;" class="headerlink" title="&#x6CE8;&#x89E3;&#x7684;&#x683C;&#x5F0F;"></a>&#x6CE8;&#x89E3;&#x7684;&#x683C;&#x5F0F;</h3><p>&#x6700;&#x7B80;&#x5355;&#x7684;&#x6CE8;&#x89E3;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre><code>@Entity
</code></pre><p><code>@</code>&#x7B26;&#x53F7;&#x5411;&#x7F16;&#x8BD1;&#x5668;&#x8868;&#x9762;&#x540E;&#x9762;&#x8DDF;&#x7740;&#x7684;&#x662F;&#x4E00;&#x6761;&#x6CE8;&#x89E3;&#x3002;&#x5728;&#x4E0B;&#x9762;&#x7684;&#x793A;&#x4F8B;&#x4E2D;&#xFF0C;<code>Override</code>&#x662F;&#x4E00;&#x4E2A;&#x6CE8;&#x89E3;&#xFF1A;</p>
<pre><code>@Override
void mySuperMethod() {... }
</code></pre><p>&#x6CE8;&#x89E3;&#x4E5F;&#x53EF;&#x4EE5;&#x5305;&#x542B;&#x989D;&#x5916;&#x7684;&#x5143;&#x7D20;&#xFF0C;&#x8FD9;&#x4E9B;&#x5143;&#x7D20;&#x53EF;&#x4EE5;&#x5E26;&#x540D;&#x79F0;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x4E0D;&#x5E26;&#x540D;&#x79F0;&#xFF1A;</p>
<pre><code>@Author(
 name = &quot;Benjamin Franklin&quot;,
 date = &quot;3/27/2003&quot;
  )
  class MyClass() { ... }
</code></pre><p>&#x6216;&#x8005;</p>
<pre><code>@SuppressWarnings(value = &quot;unchecked&quot;)
 void myMethod() { ... }
</code></pre><p>&#x5982;&#x679C;&#x53EA;&#x6709;&#x4E00;&#x4E2A;&#x5143;&#x7D20;&#xFF0C;&#x90A3;&#x4E48;&#x8BE5;&#x5143;&#x7D20;&#x7684;&#x540D;&#x79F0;&#x53EF;&#x4EE5;&#x7701;&#x7565;&#xFF0C;&#x5B83;&#x7684;&#x540D;&#x79F0;&#x5C06;&#x4F1A;&#x88AB;&#x8BBE;&#x7F6E;&#x4E3A; <code>value</code>&#xFF1A;</p>
<pre><code>@SuppressWarnings(&quot;unchecked&quot;)
void myMethod() { ... }
</code></pre><p>&#x5982;&#x679C;&#x6CE8;&#x89E3;&#x4E2D;&#x6CA1;&#x6709;&#x5143;&#x7D20;&#xFF0C;&#x90A3;&#x4E48;&#x62EC;&#x5F27;&#x4E5F;&#x53EF;&#x4EE5;&#x7701;&#x7565;&#xFF08;&#x5982;<code>@Override</code> &#x7684;&#x4F8B;&#x5B50;&#xFF09;&#x3002;</p>
<p>&#x5728;&#x4E00;&#x4E2A;&#x58F0;&#x660E;&#x4E2D;&#x4F7F;&#x7528;&#x591A;&#x4E2A;&#x6CE8;&#x89E3;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x7684;&#xFF1A;</p>
<pre><code>@Author(name = &quot;Jane Doe&quot;)
@EBook
class MyClass { ... }
</code></pre><p>&#x5982;&#x679C;&#x591A;&#x4E2A;&#x6CE8;&#x89E3;&#x5177;&#x6709;&#x76F8;&#x540C;&#x7684;&#x7C7B;&#x578B;&#xFF0C;&#x5C31;&#x79F0;&#x4E4B;&#x4E3A;<strong>&#x91CD;&#x590D;&#x6CE8;&#x89E3;(repeating annotation)</strong>   </p>
<p>&#x91CD;&#x590D;&#x6CE8;&#x89E3;&#x662F;Java SE 8 &#x624D;&#x652F;&#x6301;&#x7684;&#xFF0C;&#x67E5;&#x770B;<a href="http://docs.oracle.com/javase/tutorial/java/annotations/repeating.html" target="_blank" rel="external">Repeating Annotations</a> &#x4E86;&#x89E3;&#x66F4;&#x591A;&#x5173;&#x4E8E;&#x91CD;&#x590D;&#x6CE8;&#x89E3;&#x7684;&#x4FE1;&#x606F;&#x3002;</p>
<p>&#x6CE8;&#x89E3;&#x7684;&#x7C7B;&#x578B;&#x53EF;&#x4EE5;&#x662F;java.lang &#x6216;&#x8005; java.lang.annotation &#x5305;&#x4E2D;&#x5B9A;&#x4E49;&#x7684;&#x4E00;&#x4E2A;&#x7C7B;&#x578B;&#x3002; &#x5728;&#x4E4B;&#x524D;&#x7684;&#x4F8B;&#x5B50;&#x4E2D;&#xFF0C;<code>Override</code> &#x548C; <code>SuppressWarnings</code> &#x662F; Java&#x9884;&#x5B9A;&#x4E49;&#x7684;&#x6CE8;&#x89E3;(<a href="http://docs.oracle.com/javase/tutorial/java/annotations/predefined.html" target="_blank" rel="external">&#x9884;&#x5B9A;&#x4E49;&#x7684;Java&#x6CE8;&#x89E3;</a>)&#xFF0C;&#x4F60;&#x4E5F;&#x53EF;&#x4EE5;&#x5B9A;&#x4E49;&#x4F60;&#x81EA;&#x5DF1;&#x7684;&#x6CE8;&#x89E3;&#x7C7B;&#x578B;&#xFF0C;&#x4E4B;&#x524D;&#x793A;&#x4F8B;&#x4E2D;&#x7684;<code>Author</code>&#x548C;<code>Ebook</code> &#x6CE8;&#x89E3;&#x5C31;&#x662F;&#x81EA;&#x5B9A;&#x4E49;&#x7684;&#x6CE8;&#x89E3;&#x3002;</p>
<p>###&#x6CE8;&#x89E3;&#x53EF;&#x4EE5;&#x88AB;&#x7528;&#x5728;&#x4EC0;&#x4E48;&#x5730;&#x65B9;</p>
<p>&#x6CE8;&#x89E3;&#x53EF;&#x4EE5;&#x88AB;&#x7528;&#x5728;&#x58F0;&#x660E;&#x4E0A;&#xFF0C;&#x5982;&#x7C7B;&#x58F0;&#x660E;&#xFF0C;&#x7C7B;&#x5C5E;&#x6027;&#x58F0;&#x660E;&#xFF0C;&#x65B9;&#x6CD5;&#x58F0;&#x660E;&#xFF0C;&#x8FD8;&#x6709;&#x5176;&#x4ED6;&#x7684;&#x7A0B;&#x5E8F;&#x5143;&#x7D20;&#x3002; &#x5F53;&#x6CE8;&#x89E3;&#x5E94;&#x7528;&#x4E8E;&#x58F0;&#x660E;&#x662F;&#xFF0C;&#x4E00;&#x4E2A;&#x6CE8;&#x89E3;&#x901A;&#x5E38;&#x5360;&#x636E;&#x5355;&#x72EC;&#x7684;&#x4E00;&#x884C;&#x3002;</p>
<p>&#x5728;JavaSE 8 Release &#x4E2D;&#xFF0C;&#x6CE8;&#x89E3;&#x4E5F;&#x53EF;&#x4EE5;&#x88AB;&#x7528;&#x5728;&#x7C7B;&#x578B;&#x7684;&#x4F7F;&#x7528;&#x4E0A;&#xFF0C;&#x5982;&#xFF1A;</p>
<ul>
<li><p>&#x7C7B;&#x5B9E;&#x4F8B;&#x521B;&#x5EFA;&#x8868;&#x8FBE;&#x5F0F;&#xFF1A;</p>
<pre><code>new @Interned MyObject();
</code></pre></li>
<li><p>&#x7C7B;&#x578B;&#x8F6C;&#x6362;&#xFF1A;</p>
<pre><code>myString = (@NonNull String) str;
</code></pre></li>
<li><p><code>implements</code> &#x5B50;&#x53E5;&#xFF1A;</p>
<pre><code>  class UnmodifiableList&lt;T&gt; implements 
@Readonly List&lt;@Readonly T&gt; { ... }
</code></pre></li>
<li><p>&#x5F02;&#x5E38;&#x629B;&#x51FA;&#x8BED;&#x53E5;&#xFF1A;</p>
<pre><code>void monitorTemperature() throws
@Critical TemperatureException { ... }
</code></pre><p>&#x8FD9;&#x4E9B;&#x683C;&#x5F0F;&#x7684;&#x6CE8;&#x89E3;&#x88AB;&#x79F0;&#x4E4B;&#x4E3A;<em>&#x7C7B;&#x578B;&#x6CE8;&#x89E3;</em>&#x3002; &#x4F60;&#x53EF;&#x4EE5;&#x67E5;&#x770B; <a href="http://docs.oracle.com/javase/tutorial/java/annotations/type_annotations.html" target="_blank" rel="external">Type Annotations and Pluggable Type Systems</a> &#x4E86;&#x89E3;&#x66F4;&#x591A;&#x4FE1;&#x606F;&#x3002;</p>
</li>
</ul>
<hr>
<h2 id="&#x58F0;&#x660E;&#x6CE8;&#x89E3;&#x7C7B;&#x578B;"><a href="#&#x58F0;&#x660E;&#x6CE8;&#x89E3;&#x7C7B;&#x578B;" class="headerlink" title="&#x58F0;&#x660E;&#x6CE8;&#x89E3;&#x7C7B;&#x578B;"></a>&#x58F0;&#x660E;&#x6CE8;&#x89E3;&#x7C7B;&#x578B;</h2><p>&#x8BB8;&#x591A;&#x6CE8;&#x89E3;&#x7528;&#x4E8E;&#x66FF;&#x6362;&#x4EE3;&#x7801;&#x4E2D;&#x7684;&#x6CE8;&#x91CA;&#x3002;</p>
<p>&#x8BBE;&#x60F3;&#x6709;&#x4E00;&#x4E2A;&#x8F6F;&#x4EF6;&#x7EC4;&#x7EC7;&#x5728;&#x6BCF;&#x4E2A;&#x7C7B;&#x7684;&#x5185;&#x5BB9;&#x5F00;&#x59CB;&#x90E8;&#x5206;&#x4F7F;&#x7528;&#x6CE8;&#x91CA;&#x63D0;&#x4F9B;&#x4E00;&#x4E9B;&#x91CD;&#x8981;&#x7684;&#x4FE1;&#x606F;&#xFF0C;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre><code>public class Generation3List extends Generation2List {

   // Author: John Doe
   // Date: 3/17/2002
   // Current revision: 6
   // Last modified: 4/12/2004
   // By: Jane Doe
   // Reviewers: Alice, Bill, Cindy

   // class code goes here

}
</code></pre><p>&#x4E3A;&#x4E86;&#x4F7F;&#x7528;&#x6CE8;&#x89E3;&#x6765;&#x6DFB;&#x52A0;&#x76F8;&#x540C;&#x7684;&#x5143;&#x6570;&#x636E;&#xFF0C;&#x9996;&#x5148;&#x4F60;&#x9700;&#x8981;&#x6709;&#x4E00;&#x4E2A; &#x6CE8;&#x89E3;&#x7C7B;&#x578B;&#x3002; &#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x5982;&#x4E0B;&#x683C;&#x5F0F;&#x5B9A;&#x4E49;&#xFF1A;</p>
<pre><code>@interface ClassPreamble {
   String author();
   String date();
   int currentRevision() default 1;
   String lastModified() default &quot;N/A&quot;;
   String lastModifiedBy() default &quot;N/A&quot;;
   // Note use of array
   String[] reviewers();
}
</code></pre><p>&#x6CE8;&#x89E3;&#x7684;&#x5B9A;&#x4E49;&#x548C;&#x63A5;&#x53E3;&#x7684;&#x5B9A;&#x4E49;&#x65B9;&#x5F0F;&#x5F88;&#x50CF;&#xFF0C;&#x4E0D;&#x8FC7;&#x6CE8;&#x89E3;&#x7684; <code>interface</code> &#x5173;&#x952E;&#x8BCD;&#x524D;&#x9762;&#x6709;&#x4E00;&#x4E2A;(<code>@</code>)&#x3002; &#x5B9E;&#x9645;&#x4E0A;&#x6CE8;&#x89E3;&#x7C7B;&#x578B;&#x4E5F;&#x662F;&#x4E00;&#x79CD;<strong><code>interface</code></strong>&#xFF0C;&#x8FD9;&#x4E2A;&#x5728;&#x540E;&#x9762;&#x4F1A;&#x8BF4;&#x660E;&#xFF0C;&#x4F46;&#x662F;&#x73B0;&#x5728;&#x4F60;&#x5E76;&#x4E0D;&#x9700;&#x8981;&#x7406;&#x89E3;&#x8FD9;&#x4E00;&#x70B9;&#x3002;</p>
<p>&#x793A;&#x4F8B;&#x4E2D;&#x7684;&#x6CE8;&#x89E3;&#x5B9A;&#x4E49;&#x5305;&#x542B;&#x4E86;<strong><em>&#x6CE8;&#x89E3;&#x7C7B;&#x578B;&#x5143;&#x7D20;</em></strong> &#x5B9A;&#x4E49;&#xFF0C;&#x5B83;&#x770B;&#x8D77;&#x6765;&#x5F88;&#x50CF;&#x4E00;&#x4E2A;&#x65B9;&#x6CD5;&#xFF0C;&#x4F46;&#x662F;&#x5B83;&#x53EF;&#x4EE5;&#x5B9A;&#x4E49;&#x9ED8;&#x8BA4;&#x503C;&#x3002;</p>
<p>&#x5728;&#x5B9A;&#x4E49;&#x4E86;&#x6CE8;&#x89E3;&#x7C7B;&#x578B;&#x4E4B;&#x540E;&#xFF0C;&#x4F60;&#x5C31;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x5B83;&#x4E86;&#xFF0C;&#x5982;&#xFF1A;</p>
<pre><code>@ClassPreamble (
   author = &quot;John Doe&quot;,
   date = &quot;3/17/2002&quot;,
   currentRevision = 6,
   lastModified = &quot;4/12/2004&quot;,
   lastModifiedBy = &quot;Jane Doe&quot;,
   // Note array notation
   reviewers = {&quot;Alice&quot;, &quot;Bob&quot;, &quot;Cindy&quot;}
)
public class Generation3List extends Generation2List {

// class code goes here

}
</code></pre><p><strong>&#x63D0;&#x793A;&#xFF1A;</strong> &#x4E3A;&#x4E86;&#x4F7F;<code>@ClassPreamble</code> &#x4E2D;&#x7684;&#x4FE1;&#x606F;&#x53EF;&#x4EE5;&#x51FA;&#x73B0;&#x5728;&#x751F;&#x6210;&#x7684;java doc &#x4E2D;&#xFF0C;&#x4F60;&#x5FC5;&#x987B;&#x5728;<code>@ClassPreamble</code> &#x7684;&#x5B9A;&#x4E49;&#x524D;&#x52A0;&#x4E0A;<code>@Docmented</code> &#x6CE8;&#x89E3;&#xFF1A;</p>
<pre><code>// import this to use @Documented
import java.lang.annotation.*;

@Documented
@interface ClassPreamble {

   // Annotation element definitions

}
</code></pre><h2 id="&#x9884;&#x5B9A;&#x4E49;&#x7684;&#x6CE8;&#x89E3;&#x7C7B;&#x578B;"><a href="#&#x9884;&#x5B9A;&#x4E49;&#x7684;&#x6CE8;&#x89E3;&#x7C7B;&#x578B;" class="headerlink" title="&#x9884;&#x5B9A;&#x4E49;&#x7684;&#x6CE8;&#x89E3;&#x7C7B;&#x578B;"></a>&#x9884;&#x5B9A;&#x4E49;&#x7684;&#x6CE8;&#x89E3;&#x7C7B;&#x578B;</h2><p>Java SE API &#x4E2D;&#x5DF2;&#x7ECF;&#x9884;&#x5B9A;&#x4E49;&#x4E86;&#x4E00;&#x7CFB;&#x5217;&#x7684;&#x6CE8;&#x89E3;&#x7C7B;&#x578B;&#x3002;&#x5176;&#x4E2D;&#x4E00;&#x4E9B;&#x88AB;java&#x7F16;&#x8BD1;&#x5668;&#x8BFB;&#x53D6;&#x4F7F;&#x7528;&#xFF0C;&#x8FD8;&#x6709;&#x4E00;&#x4E9B;&#x7528;&#x4E8E;&#x5176;&#x4ED6;&#x7684;&#x6CE8;&#x89E3;&#x3002;</p>
<h3 id="&#x88AB;java-&#x8BED;&#x8A00;&#x4F7F;&#x7528;&#x7684;&#x6CE8;&#x89E3;"><a href="#&#x88AB;Java-&#x8BED;&#x8A00;&#x4F7F;&#x7528;&#x7684;&#x6CE8;&#x89E3;" class="headerlink" title="&#x88AB;Java &#x8BED;&#x8A00;&#x4F7F;&#x7528;&#x7684;&#x6CE8;&#x89E3;"></a>&#x88AB;Java &#x8BED;&#x8A00;&#x4F7F;&#x7528;&#x7684;&#x6CE8;&#x89E3;</h3><p><code>java.lang</code>&#x5305;&#x91CC;&#x5B9A;&#x4E49;&#x4E86;&#x4EE5;&#x4E0B;&#x6CE8;&#x89E3;&#xFF1A; <code>@Deprecated</code>&#xFF0C;<code>@Override</code>&#xFF0C;<code>@SupressWarnings</code>&#x3002;</p>
<p><strong>@DePrecated</strong> <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html" target="_blank" rel="external"><code>@Deprecated</code></a> &#x6CE8;&#x89E3;&#x8868;&#x793A;&#x88AB;&#x5176;&#x6807;&#x8BB0;&#x7684;&#x5143;&#x7D20;&#x5DF2;&#x7ECF;&#x5E9F;&#x5F03;&#xFF0C;&#x4E0D;&#x5E94;&#x8BE5;&#x518D;&#x88AB;&#x4F7F;&#x7528;&#x3002; &#x5F53;&#x4F7F;&#x7528;&#x4E00;&#x4E2A;&#x88AB;<code>@Deprecated</code> &#x6807;&#x8BB0;&#x7684;&#x7C7B;/&#x65B9;&#x6CD5;/&#x53D8;&#x91CF;&#x65F6;&#xFF0C;&#x7F16;&#x8BD1;&#x5668;&#x4F1A;&#x751F;&#x6210;&#x4E00;&#x4E2A;&#x8B66;&#x544A;&#x3002; &#x5F53;&#x4E00;&#x4E2A;&#x5143;&#x7D20;&#x88AB;&#x5E9F;&#x5F03;&#x65F6;&#xFF0C;&#x5728;&#x5B83;&#x7684;Javadoc &#x6CE8;&#x91CA;&#x4E2D;&#x4E5F;&#x5E94;&#x8BE5;&#x4F7F;&#x7528;<code>@Deprecated</code> &#x6CE8;&#x89E3;&#x6807;&#x8BB0;&#xFF0C;&#x5982;&#x4E0B;&#x9762;&#x7684;&#x793A;&#x4F8B;&#x4EE3;&#x7801;&#x6240;&#x793A;. Javadoc&#x4E2D;&#x4F7F;&#x7528;&#x7684;<code>@</code> &#x7B26;&#x53F7;&#x548C;&#x6CE8;&#x89E3;&#x4E2D;&#x4F7F;&#x7528;<code>@</code>&#x7B26;&#x53F7;&#x5E76;&#x975E;&#x5DE7;&#x5408;&#xFF0C;&#x5B9E;&#x9645;&#x4E0A;&#x5B83;&#x4EEC;&#x662F;&#x76F8;&#x5173;&#x8054;&#x7684;&#x6982;&#x7387;&#x3002; &#x53E6;&#x5916;&#xFF0C;&#x8BF7;&#x6CE8;&#x610F; javadoc&#x4E2D;<code>@</code>&#x540E;&#x7684;&#x5185;&#x5BB9;&#x4EE5;&#x4E00;&#x4E2A;&#x5C0F;&#x5199;&#x7684;<em><strong>d</strong></em>&#x5F00;&#x5934;&#xFF0C;&#x800C;&#x6CE8;&#x89E3;&#x4E2D;&#x7684;&#x662F;&#x5927;&#x5199;&#x7684; <em><strong>D</strong></em>&#x3002;</p>
<pre><code>   // Javadoc comment follows
    /**
     * @deprecated
     * explanation of why it was deprecated
     */
    @Deprecated
    static void deprecatedMethod() { }
}
</code></pre><p><strong>@Override</strong> <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Override.html" target="_blank" rel="external"><code>@Override</code></a> &#x6CE8;&#x89E3;&#x544A;&#x8BC9;&#x7F16;&#x8BD1;&#x5668;&#x88AB;&#x6CE8;&#x89E3;&#x7684;&#x5143;&#x7D20;&#x8986;&#x76D6;&#x4E86;&#x8D85;&#x7C7B;&#x7684;&#x5BF9;&#x5E94;&#x7684;&#x58F0;&#x660E;&#x3002;&#xFF08;&#x65B9;&#x6CD5;&#x8986;&#x76D6;&#x5728;  <a href="http://docs.oracle.com/javase/tutorial/java/IandI/index.html" target="_blank" rel="external">Interfaces and Inheritance</a> &#x4E2D;&#x8BF4;&#x660E;&#xFF09;</p>
<pre><code>// mark method as a superclass method
// that has been overridden
@Override 
int overriddenMethod() { }
</code></pre><p>&#x4F46;&#x662F;&#xFF0C;&#x5728;&#x8986;&#x76D6;&#x65B9;&#x6CD5;&#x65F6;&#x5E76;&#x4E0D;&#x5F3A;&#x5236;&#x8981;&#x6C42;&#x4F7F;&#x7528;&#x8FD9;&#x4E2A;&#x6CE8;&#x89E3;&#xFF0C;&#x5B83;&#x53EA;&#x662F;&#x7528;&#x6765;&#x9884;&#x9632;&#x9519;&#x8BEF;&#x3002; &#x5982;&#x679C;&#x4E00;&#x4E2A;&#x65B9;&#x6CD5;&#x88AB;<code>@Override</code> &#x6807;&#x8BB0;&#x5374;&#x6CA1;&#x6709;&#x6B63;&#x786E;&#x7684;&#x8986;&#x76D6;&#x8D85;&#x7C7B;&#x7684;&#x5BF9;&#x5E94;&#x65B9;&#x6CD5;&#xFF0C;&#x90A3;&#x4E48;&#x7F16;&#x8BD1;&#x5668;&#x5C31;&#x4F1A;&#x751F;&#x6210;&#x4E00;&#x4E2A;&#x9519;&#x8BEF;&#x3002;</p>
<p><strong>@SupressWarnings</strong> <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/SuppressWarnings.html" target="_blank" rel="external"><code>@SupressWarnings</code></a> &#x6CE8;&#x89E3;&#x7981;&#x6B62;&#x7F16;&#x8BD1;&#x5668;&#x4EA7;&#x751F;&#x672C;&#x6765;&#x5E94;&#x8BE5;&#x4EA7;&#x751F;&#x7684;&#x8B66;&#x544A;&#x3002;&#x4E0B;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#x4F7F;&#x7528;&#x4E86;&#x4E00;&#x4E2A;&#x88AB;&#x629B;&#x5F03;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x6240;&#x4EE5;&#x7F16;&#x8BD1;&#x5668;&#x4F1A;&#x4EA7;&#x751F;&#x4E00;&#x6761;&#x8B66;&#x544A;&#xFF0C;&#x4F46;&#x662F; @SupressWarnings &#x6CE8;&#x89E3;&#x80FD;&#x7981;&#x6B62;&#x7F16;&#x8BD1;&#x5668;&#x4EA7;&#x751F;&#x8FD9;&#x6761;&#x8B66;&#x544A;&#x3002;</p>
<pre><code>// use a deprecated method and tell 
// compiler not to generate a warning
@SuppressWarnings(&quot;deprecation&quot;)
 void useDeprecatedMethod() {
     // deprecation warning
     // - suppressed
     objectOne.deprecatedMethod();
 }
</code></pre><p>&#x6BCF;&#x4E00;&#x4E2A;&#x8B66;&#x544A;&#x90FD;&#x5C5E;&#x4E8E;&#x4E00;&#x4E2A;&#x7C7B;&#x522B;&#xFF0C;&#x800C;Java &#x8BED;&#x8A00;&#x89C4;&#x8303;&#x5217;&#x51FA;&#x4E86;&#x4E24;&#x79CD;&#x8B66;&#x544A;&#x7C7B;&#x522B;&#xFF1A;<br><code>deprecation</code> &#x548C; <code>unchecked</code>,&#x5728;&#x4E0E;&#x6CDB;&#x578B;&#x51FA;&#x73B0;&#x4E4B;&#x524D;&#x65E7;&#x4EE3;&#x7801;&#x4EA4;&#x4E92;&#x65F6;&#x53EF;&#x80FD;&#x4F1A;&#x51FA;&#x73B0;&#x672A;&#x68C0;&#x67E5;&#x7684;&#x8B66;&#x544A;&#x3002;<br>&#x4F60;&#x4E5F;&#x53EF;&#x4EE5;&#x5728;&#x4E00;&#x4E2A;<code>@SuppressWarnings</code>&#x6CE8;&#x89E3;&#x4E2D;&#x7981;&#x6B62;&#x591A;&#x4E2A;&#x79CD;&#x7C7B;&#x7684;&#x8B66;&#x544A;&#xFF1A;</p>
<pre><code>@SuppressWarnings({&quot;unchecked&quot;, &quot;deprecation&quot;})// &#x6CE8;&#x610F;&#x5176;&#x4E2D;&#x7684;&quot;{}&quot;
</code></pre><p><strong>@SafeVarags</strong> &#x5F53;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/SafeVarargs.html" target="_blank" rel="external"><code>@SafeVarags</code></a> &#x6CE8;&#x89E3;&#x88AB;&#x7528;&#x4E8E;&#x65B9;&#x6CD5;&#x6216;&#x8005;&#x6784;&#x9020;&#x51FD;&#x6570;&#x65F6;&#xFF0C;&#x8868;&#x793A;&#x4EE3;&#x7801;&#x6CA1;&#x6709;&#x5BF9; <code>varargs</code> &#x53C2;&#x6570;&#x505A;&#x6F5C;&#x5728;&#x7684;&#x4E0D;&#x5B89;&#x5168;&#x64CD;&#x4F5C;&#xFF0C;&#x5F53;&#x4F7F;&#x7528;&#x8FD9;&#x4E2A;&#x6CE8;&#x89E3;&#x65F6;&#xFF0C; &#x548C;<code>varargs</code>  &#x76F8;&#x5173;&#x7684;unchecked &#x8B66;&#x544A;&#x5C06;&#x4F1A;&#x88AB;&#x7981;&#x6B62;&#x3002;</p>
<p><strong>@FunctionalInterface</strong> Java SE8 &#x5F15;&#x5165;&#x4E86;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html" target="_blank" rel="external"><code>@FunctionalInterface</code></a> &#x6CE8;&#x89E3;&#xFF0C;&#x7528;&#x4E8E;&#x6307;&#x793A;&#x6307;&#x5B9A;&#x7684;&#x5143;&#x7D20;&#x662F;Java&#x8BED;&#x8A00;&#x89C4;&#x8303;&#x5B9A;&#x4E49;&#x7684;&#x529F;&#x80FD;&#x63A5;&#x53E3;&#xFF08;Functional interface&#xFF09;&#x3002;</p>
<h3 id="&#x5E94;&#x7528;&#x5728;&#x5176;&#x4ED6;&#x6CE8;&#x89E3;&#x4E0A;&#x7684;&#x6CE8;&#x89E3;"><a href="#&#x5E94;&#x7528;&#x5728;&#x5176;&#x4ED6;&#x6CE8;&#x89E3;&#x4E0A;&#x7684;&#x6CE8;&#x89E3;" class="headerlink" title="&#x5E94;&#x7528;&#x5728;&#x5176;&#x4ED6;&#x6CE8;&#x89E3;&#x4E0A;&#x7684;&#x6CE8;&#x89E3;"></a>&#x5E94;&#x7528;&#x5728;&#x5176;&#x4ED6;&#x6CE8;&#x89E3;&#x4E0A;&#x7684;&#x6CE8;&#x89E3;</h3><p>&#x5E94;&#x7528;&#x5728;&#x5176;&#x4ED6;&#x6CE8;&#x89E3;&#x4E0A;&#x7684;&#x6CE8;&#x89E3;&#x88AB;&#x79F0;&#x4E4B;&#x4E3A; _&#x5143;&#x6CE8;&#x89E3;(meta<em>annotations)</em>&#xFF0C;<code>java.lang.annotation</code> &#x4E2D;&#x5B9A;&#x4E49;&#x4E86;&#x4E00;&#x4E9B;&#x5143;&#x6CE8;&#x89E3;:<br><strong>@Retention</strong> <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Retention.html" target="_blank" rel="external"><code>@Retention</code></a>&#x6CE8;&#x89E3;&#x6307;&#x5B9A;&#x88AB;&#x6807;&#x8BB0;&#x7684;&#x6CE8;&#x89E3;&#x5982;&#x4F55;&#x5B58;&#x50A8;&#xFF1A;</p>
<ul>
<li><code>RetentionPolicy.SOURCE</code> - &#x53EA;&#x5728;&#x6E90;&#x4EE3;&#x7801;&#x4E2D;&#x4FDD;&#x5B58;&#xFF0C;&#x800C;&#x7F16;&#x8BD1;&#x5668;&#x4F1A;&#x5FFD;&#x7565;</li>
<li><code>RetentionPolicy.CLASS</code> - java &#x7F16;&#x8BD1;&#x5668;&#x5728;&#x7F16;&#x8BD1;&#x65F6;&#x4FDD;&#x5B58;&#xFF0C;&#x4F46;JVM&#x4F1A;&#x5FFD;&#x7565;&#x3002;</li>
<li><code>RetentionPolicy.RUNTIME</code> - JVM &#x4F1A;&#x4FDD;&#x5B58;&#xFF0C;&#x56E0;&#x6B64;&#x53EF;&#x4EE5;&#x5728;&#x8FD0;&#x884C;&#x65F6;&#x73AF;&#x5883;&#x4E2D;&#x4F7F;&#x7528;(runtime environment)</li>
</ul>
<p><strong>@Documented</strong> <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Documented.html" target="_blank" rel="external"><code>@Documented</code></a> &#x6CE8;&#x89E3;&#x6307;&#x793A;JavaDoc&#x5DE5;&#x5177;&#x5904;&#x7406;&#x65F6;&#x88AB;&#x6807;&#x8BB0;&#x7684;&#x5143;&#x7D20;&#x5E94;&#x8BE5;&#x751F;&#x6210;&#x6587;&#x6863;&#x3002;&#xFF08;&#x9ED8;&#x8BA4;&#x60C5;&#x51B5;&#x4E0B;&#x6CE8;&#x89E3;&#x4E0D;&#x4F1A;&#x5305;&#x5305;&#x542B;&#x5230;javadoc&#x4E2D;&#xFF09;&#xFF0C;&#x4F60;&#x53EF;&#x4EE5;&#x67E5;&#x770B; <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/index.html" target="_blank" rel="external">Javadoc tools page</a> &#x83B7;&#x53D6;&#x66F4;&#x591A;&#x4FE1;&#x606F;&#x3002;</p>
<p><strong>@Target</strong> <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Target.html" target="_blank" rel="external"><code>@Target</code></a> &#x6CE8;&#x89E3;&#x7528;&#x4E8E;&#x9650;&#x5236;&#x5176;&#x4ED6;&#x6CE8;&#x89E3;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x7684;&#x5143;&#x7D20;&#xFF0C;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x7684;&#x503C;&#x5982;&#x4E0B;&#xFF1A;</p>
<ul>
<li><code>ElementType.ANNOTATION_TYPE</code> &#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x5728;&#x4EFB;&#x4F55;&#x5143;&#x7D20;&#x4E0A;</li>
<li><code>ElementType.CONSTRUCTOR</code> &#x4F7F;&#x7528;&#x4E8E;&#x6784;&#x9020;&#x51FD;&#x6570;</li>
<li><code>ElementType.FIELD</code> &#x7C7B;&#x6210;&#x5458;&#x6216;&#x5C5E;&#x6027;</li>
<li><code>ElementType.LOCAL_VARIABLE</code> &#x672C;&#x5730;&#x53D8;&#x91CF;</li>
<li><code>ElementType.METHOD</code> &#x65B9;&#x6CD5;&#x7EA7;&#x522B;&#x7684;&#x6CE8;&#x89E3;</li>
<li><code>ElementType.PACKAGE</code> &#x5305;&#x58F0;&#x660E;</li>
<li><code>ElementType.PARAMETER</code> &#x65B9;&#x6CD5;&#x7684;&#x53C2;&#x6570;</li>
<li><code>ElementType.TYPE</code>&#x4E00;&#x4E2A;&#x7C7B;&#x7684;&#x4EFB;&#x4F55;&#x5143;&#x7D20; &#xFF08;any element of a class&#xFF09;</li>
</ul>
<p><strong>@Inherited</strong> <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Inherited.html" target="_blank" rel="external"><code>@Inherited</code></a>   &#x9ED8;&#x8BA4;&#x60C5;&#x51B5;&#x4E0B;&#x5B50;&#x7C7B;&#x662F;&#x6CA1;&#x6709;&#x7EE7;&#x627F;&#x7236;&#x7C7B;&#x7684;&#x6CE8;&#x89E3;&#x4FE1;&#x606F;&#x7684;&#xFF0C;&#x800C;&#x4F7F;&#x7528;&#x6B64;&#x6CE8;&#x89E3;&#x540E;&#xFF0C;&#x5B50;&#x7C7B;&#x4F1A;&#x7EE7;&#x627F;&#x7236;&#x7C7B;&#x7684;&#x6CE8;&#x89E3;&#x3002;&#x4F7F;&#x7528;&#x4E86;<code>@Inherited</code> &#x6CE8;&#x89E3;&#x540E;&#xFF0C;&#x5F53;&#x7528;&#x6237;&#x67E5;&#x8BE2;&#x7C7B;&#x4E2D;&#x7684;&#x6CE8;&#x89E3;&#x4FE1;&#x606F;&#x65F6;&#xFF0C;&#x5982;&#x679C;&#x6CA1;&#x6709;&#x627E;&#x5230;&#x76F8;&#x5E94;&#x7C7B;&#x578B;&#x7684;&#x6CE8;&#x89E3;&#x4FE1;&#x606F;&#xFF0C;&#x5219;&#x4F1A;&#x53BB;&#x7236;&#x7C7B;&#x4E2D;&#x67E5;&#x8BE2;&#x3002;<code>@Inherited</code> &#x6CE8;&#x89E3;&#x53EA;&#x7528;&#x4E8E;&#x7C7B;&#x58F0;&#x660E;&#x4E0A;&#x7684;&#x6CE8;&#x89E3;&#x3002;</p>
<p><strong>@Repeatable</strong> <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Repeatable.html" target="_blank" rel="external"><code>@Repeatable</code></a> &#x6CE8;&#x89E3;&#x65F6; Java SE 8 &#x5F15;&#x5165;&#x7684;, &#x8868;&#x88AB;&#x58F0;&#x660E;&#x7684;&#x6CE8;&#x89E3;&#x53EF;&#x4EE5;&#x5728;&#x4E00;&#x4E2A;&#x5143;&#x7D20;&#x58F0;&#x660E;&#x4E0A;&#x4F7F;&#x7528;&#x591A;&#x6B21;&#x3002;&#x66F4;&#x591A;&#x4FE1;&#x606F;&#x53EF;&#x4EE5;&#x67E5;&#x770B; <a href="http://docs.oracle.com/javase/tutorial/java/annotations/repeating.html" target="_blank" rel="external">Repeating Annotations</a>&#x3002;</p>
<hr>
<p>&#x5173;&#x4E8E;<strong>@FunctionalInterface</strong>&#x6CE8;&#x89E3;&#xFF1A;</p>
<ul>
<li><a href="http://colobu.com/2014/10/28/secrets-of-java-8-functional-interface/?from=codefrom.com&amp;from_s=xinzhi.codefrom.com" target="_blank" rel="external">Java 8&#x51FD;&#x6570;&#x5F0F;&#x63A5;&#x53E3;functional interface&#x7684;&#x79D8;&#x5BC6;</a> </li>
<li><a href="http://blog.oneapm.com/apm-tech/226.html" target="_blank" rel="external">&#x6DF1;&#x5165;&#x6D45;&#x51FA; Java 8 Lambda &#x8868;&#x8FBE;&#x5F0F;</a></li>
</ul>

    
  </div>
</article>

</div>


  <div class="text-center donation">
    <div class="inner-donation">
      <span class="btn-donation">支持一下</span>
      <div class="donation-body">
        <div class="tip text-center">扫一扫，支持HanlyJiang</div>
        <ul class="theme.donation.items.length">
        
          <li class="item">
            <img src="/images/qr-wechat.png" alt="">
          </li>
        
          <li class="item">
            <img src="/images/qr_zhifubao.jpg" alt="">
          </li>
        
        </ul>
      </div>
    </div>
  </div>




  <a id="backTop" class="back-top">
    <i class="icon-angle-up"></i>
  </a>




  <div class="modal" id="modal">
  <span id="cover" class="cover hide"></span>
  <div id="modal-dialog" class="modal-dialog hide-dialog">
    <div class="modal-header">
      <span id="close" class="btn-close">关闭</span>
    </div>
    <hr>
    <div class="modal-body">
      <ul class="list-toolbox">
        
          <li class="item-toolbox">
            <a
              class="ROUND_RECT"
              href="/archives/"
              rel="noopener noreferrer"
              target="_self"
              >
              博客
            </a>
          </li>
        
          <li class="item-toolbox">
            <a
              class="ROUND_RECT"
              href="/category/"
              rel="noopener noreferrer"
              target="_self"
              >
              分类
            </a>
          </li>
        
          <li class="item-toolbox">
            <a
              class="ROUND_RECT"
              href="/tag/"
              rel="noopener noreferrer"
              target="_self"
              >
              标签
            </a>
          </li>
        
          <li class="item-toolbox">
            <a
              class="ROUND_RECT"
              href="/about/"
              rel="noopener noreferrer"
              target="_self"
              >
              关于
            </a>
          </li>
        
          <li class="item-toolbox">
            <a
              class="ROUND_RECT"
              href="/atom.xml"
              rel="noopener noreferrer"
              target="_blank"
              >
              RSS
            </a>
          </li>
        
          <li class="item-toolbox">
            <a
              class="ROUND_RECT"
              href="/search/"
              rel="noopener noreferrer"
              target="_self"
              >
              搜索
            </a>
          </li>
        
      </ul>

    </div>
  </div>
</div>



  
      <div class="fexo-comments comments-post">
    
  <section class="disqus-comments">
    <div id="disqus_thread">
      <noscript>Please enable JavaScript to view the <a href="//disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
    </div>
  </section>

  <script>
    var disqus_shortname = 'forsigner';
    
    var disqus_url = 'http://hanlyjiang.github.io/2016/08/03/Java注解介绍/';
    
    (function(){
      var dsq = document.createElement('script');
      dsq.type = 'text/javascript';
      dsq.async = true;
      dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
      (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
  </script>

  <script id="dsq-count-scr" src="//forsigner.disqus.com/count.js" async></script>



    




  </div>

  

  <script type="text/javascript">
  function loadScript(url, callback) {
    var script = document.createElement('script')
    script.type = 'text/javascript';

    if (script.readyState) { //IE
      script.onreadystatechange = function() {
        if (script.readyState == 'loaded' ||
          script.readyState == 'complete') {
          script.onreadystatechange = null;
          callback();
        }
      };
    } else { //Others
      script.onload = function() {
        callback();
      };
    }

    script.src = url;
    document.getElementsByTagName('head')[0].appendChild(script);
  }

  window.onload = function() {
    loadScript('/js/bundle.js?235683', function() {
      // load success
    });
  }
</script>

</body>
</html>
